package com.fas.core.constant;

/**
 * 系统常量
 * 
 * 1、系统常量 2、字典数据 3、KEY 4、操作类型枚举 5、缓存KEY 6、权限字符
 *
 * @Copyright: Copyright (c) 2016 FAS
 * @anthor yixiaoping<thinker1013@163.com>
 * @since 2016年1月23日 下午2:46:49
 * @version V1.0
 */
public final class R {

	/******************************** 【beging 系统常量 beging】 *****************************************/

	public static final class Const {
		public static final String TRUE = "TRUE";
		public static final String FALSE = "FALSE";

		public static final Long SUPER_CORPID = -1L;
		/**
		 * 字典分类根节点ID
		 */
		public static final Long ROOT_DICTID = -1L; //
		/**
		 * 资源根节点ID
		 */
		public static final Long ROOT_RESID = 0L;
		/**
		 * 组织机构跟节点ID
		 */
		public static final Long ROOT_ORGID = 0L;
		/**
		 * 状态为STATUS_UNAVAILABLE情况下，排序默认为-1
		 */
		public static final Integer DEFAULT_PRIORITY_VAL = -1;
		/**
		 * Jfinal Db.batch操作时，批量处理数量
		 */
		public static final int DB_BATCH_SIZE = 50;
		/**
		 * 新增用户默认初始化密码
		 */
		public static final String DEFAULT_UESR_PWD = "hehe2016";
	}

	/******************************** 【end 系统常量 end】 *****************************************/

	/******************************** 【beging 数据字典 beging】 *****************************************/

	public static final class Dict {
		/** 是否有效-有效 **/
		public static final Integer STATUS_AVAILABLE = 1;// 有效
		/** 是否有效-失效 **/
		public static final Integer STATUS_UNAVAILABLE = 0;// 失效

		/** 是否，是 **/
		public static final String IS_OR_NOT_Y = "1";// 是
		/** 是否，否 **/
		public static final String IS_OR_NOT_N = "0";// 否

		/** 资源类型: 菜单 **/
		public static final String RES_MENU = "menu";
		/** 资源类型：按照 **/
		public static final String RES_BUTTON = "button";

		/** 机构类型: 总公司 **/
		public static final String ORG_COM = "company";
		/** 机构类型： 分公司 **/
		public static final String ORG_BR = "branch";
		/** 机构类型: 部门 **/
		public static final String ORG_DEPT = "dept";
		/** 机构类型：小组 **/
		public static final String ORG_GROUP = "group";
		
		/** 字典类别类型：目录 **/
		public static final Integer DICT_FOLDER = 1;
		/** 字典类别类型：字典类别 **/
		public static final Integer DICT_GROUP = 2;
	}

	/******************************** 【end 数据字典 end】 *****************************************/

	/******************************** 【beging KEY beging】 *****************************************/
	public static final class Key {
		/** session attr key: 登录登录用户 **/
		public final static String LOGIN_USER = "LOGIN_USER";
		/** Msg标签，key属性默认值 **/
		public final static String DEFAULT_MSGTAG_KEY = "result";
		/** attr key: 是否新增 **/
		public final static String IS_NEW = "ISNEW";
		/** attr key: 是否编辑 **/
		public final static String IS_EDIT = "ISEDIT";
		/** attr key: 操作类型 **/
		public final static String OPER_TYPE = "operType";
		/** para key: 主键参数名称PK **/
		public final static String PK = "PK";
		/** attr key: save成功后跳转页面KEY **/
		public final static String REDIRECT_URL = "redirectUrl";
	}

	/******************************** 【end KEY end】 *****************************************/
	public static enum OperType {
		ADD("新增", 1), UPDATE("修改", 2), DELETE("删除", 3), VIEW("查看", 4);

		private String name;
		private int code;

		OperType(String name, int code) {
			this.name = name;
			this.code = code;
		}

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public int getCode() {
			return code;
		}

		public void setCode(int code) {
			this.code = code;
		}

		public String toString() {
			return this.code + "";
		}
	}

	public static final class CacheName {
		/**
		 * 数据字典缓存 1) 字典翻译
		 */
		public final static String GLOBAL_DICT_DATA = "GLOBAL_DICT_DATA";

		/**
		 * 资源缓存 1) 菜单、按钮
		 */
		public final static String GLOBAL_RES_DATA = "GLOBAL_RES_DATA";

		/**
		 * 资源缓存 1) 组织机构
		 */
		public final static String GLOBAL_ORG_DATA = "GLOBAL_ORG_DATA";
	}

	/**
	 * 
	 * 系统权限
	 */
	public static final class Authority {
		/**
		 * 用户表(sys_user)
		 */
		public static final class User {
			/** 用户 —— 查询权限 **/
			public final static String QUERY = "user:query";
			/** 用户 —— 创建权限 **/
			public final static String CREATE = "user:create";
			/** 用户 —— 修改权限 **/
			public final static String UPDATE = "user:update";
			/** 用户 —— 查看权限 **/
			public final static String VIEW = "user:view";
			/** 用户 —— 删除权限 **/
			public final static String DELETE = "user:delete";
			/** 用户 —— 重置用户密码权限 **/
			public final static String RESETPWD = "user:resetpwd";
			
		}

		/**
		 * 角色表(sys_role)
		 */
		public static final class Role {
			/** 角色 —— 查询权限 **/
			public final static String QUERY = "role:query";
			/** 角色—— 新增权限 **/
			public final static String CREATE = "role:create";
			/** 角色 —— 修改权限 **/
			public final static String UPDATE = "role:update";
			/** 角色 —— 查看权限 **/
			public final static String VIEW = "role:view";
			/** 角色 —— 删除权限 **/
			public final static String DELETE = "role:delete";
		}

		/**
		 * 字典分类(config_dictionary and config_dictionary_data)
		 */
		public static final class Dict {
			/** 字典分类&数据 —— 查询权限 **/
			public final static String QUERY = "dict:query";
			/** 字典分类&数据 —— 新增权限 **/
			public final static String CREATE = "dict:create";
			/** 字典分类&数据 —— 修改权限 **/
			public final static String UPDATE = "dict:update";
			/** 字典分类&数据 —— 查看权限 **/
			public final static String VIEW = "dict:view";
			/** 字典分类&数据 —— 删除权限 **/
			public final static String DELETE = "dict:delete";
		}

		/**
		 * 组织架构表(sys_organization)
		 */
		public static final class Org {
			/** 组织架构 —— 查询权限 **/
			public final static String QUERY = "organization:query";
			/** 组织架构 —— 新增权限 **/
			public final static String CREATE = "organization:create";
			/** 组织架构 —— 修改权限 **/
			public final static String UPDATE = "organization:update";
			/** 组织架构 —— 查看权限 **/
			public final static String VIEW = "organization:view";
			/** 组织架构 —— 删除权限 **/
			public final static String DELETE = "organization:delete";
		}

		/**
		 * 资源表(sys_resource)
		 */
		public static final class Res {
			/** 资源 —— 查询权限 **/
			public final static String QUERY = "resource:query";
			/** 资源 —— 创建权限 **/
			public final static String CREATE = "resource:create";
			/** 资源 —— 修改权限 **/
			public final static String UPDATE = "resource:update";
			/** 资源 —— 查看权限 **/
			public final static String VIEW = "resource:view";
			/** 资源 —— 删除权限 **/
			public final static String DELETE = "resource:delete";
		}

		/**
		 * 登录日志模块(sys_login_log)
		 */
		public static final class LoginLog {
			/**
			 * 登录日志查询权限
			 */
			public final static String QUERY = "loginLog:query";
		}

		/**
		 * 操作日志模块(sys_operate_log)
		 */
		public static final class OperateLog {
			/**
			 * 操作日志查询权限
			 */
			public final static String QUERY = "operateLog:query";
		}
	}
}
